var MongoClient = require('mongodb').MongoClient;
function _conmectDB(callback){
    var url = 'mongodb://localhost:27017/mongo';
    MongoClient.connect(url, function(err, db){
        callback(err, db);
    })
}
//插入数据
exports.insertOne = function(collectionName, json, callback){
    _conmectDB(function (err, db) {
        db.collection(collectionName).insertOne(json, function(err, result){
            callback(err, result);
            db.close();
        })
    })
};
//查找数据
exports.find = function(collectionName, json, args, callback){
    if(arguments.length != 3 && arguments.length != 4){
        throw new Error("参数只能是三个或者四个");
        return ;
    }else{
        var skipnumber = args.pagemount * args.page || 0;
        var limit = args.pagemount || 0;
        var sort = args.sort || {};
    }
    var json = json || {};
    var result = [];
    _conmectDB(function (err, db) {
        if(err) {
            throw err;
            db.close();
        }
        var cursor = db.collection(collectionName).find(json).limit(limit).skip(skipnumber).sort(sort);
        cursor.each(function (err, doc) {
            if(err){
                callback(err, null);
                db.close();
                return;
            }
            if (doc != null){
                result.push(doc); //放入结果数组
            }else {
                callback(null, result);
                db.close();
            }
        })
    })
};

//删除数据
exports.deleteMany = function(collectionName, json, callback){
    _conmectDB(function(err, db){
        db.collection(collectionName).deleteMany(
            json,
            function(err, results){
                callback(err, results);
                db.close();
            }
        )
    })
};

//update
exports.updateMany  = function(collectionName, json1, json2, callback){
    _conmectDB(function(err, db){
        db.collection(collectionName).updateMany(
            json1,
            json2,
            function(err, results){
                callback(err, results);
                db.close();
            }
        )
    })
};

//getAllCount
exports.getAllCount = function(collecitonName, callback){
    _conmectDB(function(err, db){
        db.collection(collecitonName).count({}).then(function(count){
            callback(count);
            db.close();
        });

    });
};